home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / lcu.zip / DRVPARMS.PAS < prev    next >
Pascal/Delphi Source File  |  1993-01-04  |  2KB  |  104 lines

  1. {$R-}    {Range checking off}
  2. {$B-}    {Boolean complete evaluation off}
  3. {$S-}    {Stack checking off}
  4. {$N-}    {No numeric coprocessor}
  5. {$I-}    {IO Checking Off}
  6. {$D-}
  7. {$T-}
  8.  
  9. unit DrvParms;
  10. {JW Sparks, last modified 6/30/88}
  11.  
  12. interface
  13. uses dos;
  14.  
  15. type
  16.    DriveType       = (HardDisk, EightSect, DSDD, SSDD, HiDensity, Unknown);
  17.    DriveNameType   = string[30];
  18.  
  19.    DriveSpecification = Record
  20.       DriveNum  : Integer;
  21.       DriveType : DriveType;
  22.       Fixed     : Boolean;
  23.       DriveSize : longInt;
  24.       DriveName : DriveNameType;
  25.       end;
  26.  
  27.  
  28. Procedure DosGetDriveParms(var DrSp : DriveSpecification;
  29.                            var IO_Error:Integer);
  30. implementation
  31.  
  32. Procedure DosGetDriveParms(var DrSp : DriveSpecification;
  33.                            var IO_Error:Integer);
  34. var
  35.    DtypeNum : Integer;
  36.    Regs     : Registers;
  37.  
  38. begin
  39. with Regs do       { Use DOS function $1C}
  40. begin
  41. {AX = Sectors per cluster}
  42. {DS:BX = Identification Byte, where
  43.          0F8H = Hard Drive, 0FCh through 0FEh = Floppy}
  44. {CX = Bytes per sector}
  45. {DX = Clusters per drive}
  46.  
  47. AX := $1C00;
  48. DX := DrSp.DriveNum;
  49. MSDos(Regs);
  50.  
  51. DrSp.Fixed := False;
  52. if (AX = $FFFF) then
  53.       begin
  54.       IO_Error := AX;
  55.       DrSp.DriveType := Unknown  ;
  56.       DrSp.DriveSize := 0;
  57.    end
  58. else
  59.    DrSp.DriveSize :=  DX * Lo(AX);
  60.    DrSp.DriveSize := DrSp.DriveSize * CX;
  61.    DTypeNum := Mem[DS:BX];
  62.    IO_Error := 0;
  63. end; {with}
  64.  
  65. Case DTypeNum of
  66. $F8 : begin
  67.       DrSp.DriveType := HardDisk;
  68.       DrSp.DriveName := 'Hard Disk';
  69.       DrSp.Fixed := TRUE;
  70.       end;
  71.  
  72. $FE : begin
  73.       DrSp.DriveType := EightSect;
  74.       DrSp.DriveName := 'Floppy Disk (8)';
  75.       end;
  76.  
  77. $FD : begin
  78.       DrSp.DriveType := DSDD;
  79.       DrSp.DriveName := 'Floppy Disk (DSDD)';
  80.       end;
  81.  
  82. $FC : begin
  83.       DrSp.DriveType := SSDD;
  84.       DrSp.DriveName := 'Floppy Disk (SSDD)';
  85.       end;
  86.  
  87. $F9 : begin
  88.       DrSp.DriveType := HiDensity;
  89.       DrSp.DriveName := 'Floppy Disk (High Capacity)';
  90.       end;
  91.  
  92. else  begin
  93.       DrSp.DriveType := Unknown;
  94.       DrSp.DriveName := 'Unknown Drive Type';
  95.       end;
  96.  
  97. end; {Case}
  98.  
  99. end;
  100.  
  101. {***}
  102.  
  103. end.
  104.